package com.leesche.zcsp.node.web.service;

import java.util.List;
import java.util.Map;

import com.leesche.zcsp.node.web.model.SysModule;
import com.leesche.zcsp.node.web.model.SysModuleCriteria;
import com.leesche.zcsp.node.web.service.impl.data.read.QuerySysModuleCondition;
import com.leesche.zcsp.node.web.service.impl.data.read.QuerySysRoleModuleCondition;
import com.leesche.zcsp.node.web.service.impl.data.read.SysModuleDto;
import com.leesche.zcsp.node.web.vo.Module;
import com.leesche.zcsp.node.web.vo.v2.Menu;

/**
 *
 * @Title: SysModuleService.java
 * @Description: TODO(调度SysModuleDao的数据表操作)
 * @author 陈立勇
 * @date 2016年9月13日 下午4:07:46
 * @version V1.0
 */
public interface SysModuleService
		extends
		BaseService<SysModule, SysModuleCriteria, SysModuleDto, QuerySysModuleCondition, Long> {


	/**
	 * @Title: findSysModuleTree
	 * @Description: TODO(获取系统权限节点)
	 * @author 陈立勇
	 * @return 系统权限树节点
	 */
	List<Menu> findSysModuleTrees();

	/**
	 * @Title: findSysModuleParentTree
	 * @Description: TODO(获取系统权限一二级节点)
	 * @author 陈立勇
	 * @return 系统权限一二级树节点
	 */
	List<SysModule> findSysModuleParentTree();

	/***
	 *
	 * @Title: findAllSysModules
	 * @Description: TODO(查询所有的)
	 * @param @param querySysModuleCondition
	 * @param @return
	 * @return List<SysModule>
	 * @throws
	 */
	Map<Integer, List<Menu>> findAllSysModules();

	/**
	 * @Title: findAllSysModules(QuerySysModuleCondition querySysModuleCondition)
	 * @Description: TODO( 获取所有系统权限 )
	 * @author Jerry
	 * @date 2016-10-27 02:19:37
	 * @param querySysModuleCondition 系统权限查询条件
	 * @return 所有系统权限
	 */
	List<SysModuleDto> findAllSysModules(QuerySysModuleCondition querySysModuleCondition);

	/***
	 *
	 * @Title: findSysModuleByCondition
	 * @Description: TODO(单个查询)
	 * @param @param querySysModuleCondition
	 * @param @return
	 * @return SysModule
	 * @throws
	 */
	SysModuleDto findSysModuleByCondition(QuerySysModuleCondition querySysModuleCondition);
	/***
	 *
	 * @Title: findModuleIDbyUserID
	 * @Description: TODO(通过用户ID查询ModuleID)
	 * @param @param querySysModuleCondition
	 * @param @return
	 * @return List<Long>
	 * @throws
	 */
	List<Long>  findModuleIDbyUserID(QuerySysModuleCondition querySysModuleCondition);

	/**
	 * @Title: findAllSysModuleTrees()
	 * @Description: TODO( 获取用户权限列表 )
	 * @author Jerry Chan
	 * @date 2017/1/6 15:55
	 * @return 用户权限列表
	 */
	List<Menu> findAllSysModuleTrees(QuerySysRoleModuleCondition condition);

	/**
	 * @Title: getRoleModules(Long usergroupid)
	 * @Description: TODO( 获取用户已使用和未使用的权限集合 )
	 * @author Jerry Chan
	 * @date 2017/1/16 18:47
	 * @return Map<String, Object>
	 */
	Map<String, Object> getRoleModules(Long usergroupid) throws Exception;

}
